Computer virtualization is a technique that involves encapsulating a representation of a physical computing machine platform into a virtual machine (VM) that is executed under the control of virtualization software running on hardware computing platforms (also referred to herein as “host computing systems” or “servers”). A group of hardware computing platforms may be organized as a cluster to provide hardware resources, such as memory, central processing units (CPUs) and so on, for VMs. Each VM is a complete execution environment, and the server provides a user interface over the network connection so that user inputs and outputs are communicated between the user and the VM. It is desirable to provide a desktop experience to the end-user when using remote services similar to the experience users have when using a traditional system where programs execute locally. The quality of the user experience can vary based on many underlying factors such as round-trip latency or network bandwidth.
A VM executing on a host computing system will typically be limited to the resources (such as memory space, CPU cycles, network bandwidth, and so on) of that host computing system. For example, the VMs executing on a first host computing system typically share the resources of the first host computing system and the VMs executing on a second host computing system typically share the resources of the second host computing system. The performance of a VM will depend on the resources of the host computing system on which the VM is executing, as well as the demands of any other VMs executing on the same host computing system. This “single” platform represents an undesirable limitation in some situations.
Further, multiple VMs are consolidated to fewest possible in a manner that the resource is utilized effectively. This ensure that adequate computing resources, such as CPU, physical memory and the like, are available for the VMs. Once VMs are consolidated it might be possible to put some host computing systems into standby mode to save power. For CPU and/or memory resource management, some systems/methods implement a “migration” of a running VM from one host computing system to another.